package com.fasterxml.jackson.datatype.guava; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.google.common.net.HostAndPort; public class HostAndPortTest extends ModuleTestBase { private final ObjectMapper MAPPER = mapperWithModule(); public void testSerialization() throws Exception { HostAndPort input = HostAndPort.fromParts("localhost", 80); String json = MAPPER.writeValueAsString(input); assertEquals("\"localhost:80\"", json); } public void testDeserialization() throws Exception { // Actually, let's support both old style and new style // old: HostAndPort result = MAPPER.readValue(aposToQuotes("{'hostText':'localhost','port':9090}"), HostAndPort.class); assertEquals("localhost", result.getHostText()); assertEquals(9090, result.getPort()); // and new: result = MAPPER.readValue(quote("localhost:7070"), HostAndPort.class); assertEquals("localhost", result.getHostText()); assertEquals(7070, result.getPort()); // and ... error (note: numbers, booleans may all be fine) try { result = MAPPER.readValue("[ ]", HostAndPort.class); fail("Should not deserialize from boolean: got "+result); } catch (JsonProcessingException e) { verifyException(e, "Can not deserialize"); } } }